linux のディレクトリ周りのコマンドと罠
ディレクトリいじり、大体思ったように動かないので罠事例集をまとめておきたいSummer498.icon
やらかしたときに都度事例を投げ入れていく
主な "思ったように動かない" の原因:
自分の原因
ファイルとディレクトリの混同
親ディレクトリが存在しない
コピー
cp path/to/src path/to/dst
コピー先の親ディレクトリが存在しない場合、エラーが発生する。回避方法はない。
cp path/to/src path/to/EMPTY/dst
cp -RT はこれを回避するためには使えない
cp -p は「パーミッション」「所有者」「タイムスタンプ」を保持したままコピーする
NOT parent
親ディレクトリも作りたい場合は tar が使える(未検証Summer498.icon)
tar -cf path/to/src - | tar -xf path/to/dst
大昔の cpコマンドは再帰コピーができず、そうゆう用途には tarコマンドを使っていた
ただしこれはバッドノウハウ
当時が反映された悲しいノウハウ
シンボリックリンク
ファイルをコピーしなくてもシンボリックリンクを貼るだけで十分な場合もある
ln -s リンク元 リンク先
削除
rmdir path/to/trash
rm path/to/trash
mv でとりあえず見えない所へ移動してしばらく放置 suto3.icon
消すときはなるべくrm -i で消している
作成
mkdir path/to/new/dir
touch path/to/new/file
ファイル(ディレクリ)の移動
mv old_path new_path
ファイル名(ディレクリ名)の変更
mv old_name new_name
ファイル(ディレクリ)のパーミッションの変更
chmod
ファイル(ディレクリ)の所有者の変更
chown
ファイル(ディレクリ)のグループの変更
chgrp
歴史的経緯などのウンチク
主な "思ったように動かない" の原因:
ソフトウェア側の原因
歴史的理由(しがらみ)
トリビア
Q:どうしてUNIXのコマンドは cp とか rm とか分かりにくい省略形なのか?
A:開発当初のサーバーと端末間の通信速度がとっても遅く、通信時間を節約するため短いコマンド名になった
草.iconSummer498.icontakker.icon
Q:どうしてUNIXのコマンドは危険な操作でも確認を取らないで、いきなり処理を初めてしまうの?
A:シェルスクリプトやパイプラインを有効活用するため
ベル研究所でUNIXを作ったときは、外部に広く普及するとは想定していなかった